﻿Public Class frmWysylka

    Private mvarDbHolder As clsDataBase
    Private mvarChanged As Boolean = False
    Private mvarCancel As Boolean = False
    Private mvarWyznSprawdzeniaLiczbyCalkowitej As Boolean
    Private mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej As Boolean
    Private mvarWyznSprawdzeniaIlosc As Boolean
    Private mvarWyznPozycjiZlecenia As Boolean = False
    Private mvarWyznTylkoDoOdczytu As Boolean = False
    Private mvarBlokowanie As clsRecordLock
    Private mvarZlecenie As clsInhZlecenie
    Private mvarWysylkaId As Integer = 0
    Private mvarWysylkaIndeks As Integer
    Private mvarUzytkownik As clsUzytkownik

    Public Sub New(ByVal IdZlecenia As Integer, ByVal IdWysylki As Integer)

        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        mvarUzytkownik = CType(clsUzytkownik.Instance(), clsUzytkownik)
        PobierzFirmyKurierskie()
        mvarZlecenie = New clsInhZlecenie(IdZlecenia, mvarDbHolder)
        mvarWysylkaId = IdWysylki

        If mvarZlecenie.StatusWysylkiID = 3 Then
            WysylkaZakonczona()
        Else
            WysylkaRealizowana()
        End If

    End Sub

    Private Sub PobierzFirmyKurierskie()

        Dim lvarDataTable As New DataTable
        lvarDataTable = clsFirmaKurierska.PobierzWszystkieFirmy(mvarDbHolder, VAR_ERROR_HANDLER)
        cmbFirmaKurierska.Items.Clear()
        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbFirmaKurierska.Items.Add(New clsFirmaKurierska(CInt(lvarRow("id")), CStr(IIf(IsDBNull(lvarRow("nazwa")), "", lvarRow("nazwa")))))
            Next
        End If

    End Sub

    Private Sub WysylkaZakonczona()

        lblStatusWysylki.Text = "WYSYŁKA ZAKOŃCZONA"

        If mvarUzytkownik.Uprawnienia("wysylka") = 10 Or mvarUzytkownik.Uprawnienia("wysylka") = 1 Then
            mvarWyznTylkoDoOdczytu = True
            MessageBox.Show("WYSYŁKA ZAKOŃCZONA - TYLKO DO ODCZYTU", "WIREMET")
            cmdNowaWysylka.Enabled = False
            cmdUsunWysylke.Enabled = False
            cmdZapisz.Enabled = False
            cmdAnuluj.Enabled = False
            cmdZakonczenieWysylki.Enabled = False
            lblStatusWysylki.Location = New Point(6, 15)
            grbTylkoDoOdczytu.Size = New Size(200, 40)
            grbDlaczego.Visible = True
            grbTylkoDoOdczytu.Visible = True
        Else
            mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, mvarZlecenie.ID, "oem.zlecenie", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
            mvarWyznTylkoDoOdczytu = False
            If Not mvarBlokowanie.RecordLocked Then
                mvarWyznTylkoDoOdczytu = True
                cmdNowaWysylka.Enabled = False
                cmdUsunWysylke.Enabled = False
                MessageBox.Show("TYLKO DO ODCZYTU", "WIREMET")
                cmdZapisz.Enabled = False
                cmdAnuluj.Enabled = False
                cmdZakonczenieWysylki.Enabled = False
                grbTylkoDoOdczytu.Visible = True
            End If
        End If
        UzupelnijDaneZlecenia()

    End Sub

    Private Sub WysylkaRealizowana()

        If mvarUzytkownik.Uprawnienia("wysylka") = 1 Then
            mvarWyznTylkoDoOdczytu = True
            cmdNowaWysylka.Enabled = False
            cmdUsunWysylke.Enabled = False
            MessageBox.Show("TYLKO DO ODCZYTU", "WIREMET")
            cmdZapisz.Enabled = False
            cmdAnuluj.Enabled = False
            cmdZakonczenieWysylki.Enabled = False
            grbTylkoDoOdczytu.Visible = True
        Else
            mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, mvarZlecenie.ID, "oem.zlecenie", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
            If Not mvarBlokowanie.RecordLocked Then
                mvarWyznTylkoDoOdczytu = True
                cmdNowaWysylka.Enabled = False
                cmdUsunWysylke.Enabled = False
                MessageBox.Show("TYLKO DO ODCZYTU", "WIREMET")
                cmdZapisz.Enabled = False
                cmdAnuluj.Enabled = False
                cmdZakonczenieWysylki.Enabled = False
                grbTylkoDoOdczytu.Visible = True
            End If
        End If
        UzupelnijDaneZlecenia()

    End Sub


    Private Sub UzupelnijDaneZlecenia()

        Dim lvarI As Integer

        lblNazwaKlienta.Text = mvarZlecenie.Klient.NazwaSkrocona
        lblDataZlozenia.Text = CStr(mvarZlecenie.DataZamowienia.Date)
        lblNumerZlecenia.Text = mvarZlecenie.Numer
        If mvarZlecenie.Uwagi <> String.Empty Then
            lblFirmaKurierska.Text = mvarZlecenie.Uwagi
        Else
            lblFirmaKurierska.Text = mvarZlecenie.Klient.Wysylka
        End If

        lblAdresWysylki.Text = "ul." & mvarZlecenie.AdresWysylki.Ulica & " " & mvarZlecenie.AdresWysylki.Numer & vbNewLine & mvarZlecenie.AdresWysylki.KodPocztowy & " " & mvarZlecenie.AdresWysylki.Miejscowosc & ", " & mvarZlecenie.AdresWysylki.Kraj

        'Uzupelnienie pozycji zlecenia
        lvarI = 0
        For Each lvarPozycja As clsInhPozycjaZlecenia In mvarZlecenie.PozycjeZlecenia
            lvarI += 1
            dgvPozycjeZlecenia.Rows.Add(lvarI, lvarPozycja.Id, lvarPozycja.PowierzonyMaterial, lvarPozycja.MaterialOgolnie.NazwaAng, lvarPozycja.Wymiar, lvarPozycja.TolDolna, lvarPozycja.TolGorna, lvarPozycja.Wydluzenie, lvarPozycja.WytrzymaloscMin, lvarPozycja.WytrzymaloscMax, lvarPozycja.Ilosc, lvarPozycja.Jednostka.Jednostka, lvarPozycja.Swiadectwo, lvarPozycja.Pakowaie.Nazwa, lvarPozycja.CenaOpakowania, lvarPozycja.Cena, lvarPozycja.Waluta.Nazwa, lvarPozycja.Uwagi)
            dgvPozycjeZlecenia.Rows(lvarI - 1).Tag = lvarPozycja
        Next
        txtOpisZakonczenia.Text = mvarZlecenie.OpisZakonczenia

        'Uzupelnienie wysylek
        lvarI = 0
        For Each lvarWysylki As clsInhWysylka In mvarZlecenie.Wysylka
            lvarI += 1
            dgvWysylki.Rows.Add(lvarI, lvarWysylki.Numer, lvarWysylki.DataWysylki.ToShortDateString, lvarWysylki.Pracownik.Nazwisko)
            dgvWysylki.Rows(lvarI - 1).Tag = lvarWysylki
        Next

        'Sprawdzenie pozycji zlecenia
        Dim lvarTmp As Double
        For Each lvarRow As DataGridViewRow In dgvPozycjeZlecenia.Rows
            lvarTmp = WyslanaIlosc(CType(lvarRow.Tag, clsInhPozycjaZlecenia).Id)
            If lvarTmp >= CDbl(CType(lvarRow.Tag, clsInhPozycjaZlecenia).Ilosc) Then
                dgvPozycjeZlecenia.Rows(lvarRow.Index).DefaultCellStyle.BackColor = Color.LightSteelBlue  'CornflowerBlue
            ElseIf lvarTmp <> 0 Then
                dgvPozycjeZlecenia.Rows(lvarRow.Index).DefaultCellStyle.BackColor = Color.Lavender 'LightBlue
            Else
                dgvPozycjeZlecenia.Rows(lvarRow.Index).DefaultCellStyle.BackColor = Color.White
            End If
        Next

    End Sub

    Private Sub UzupelnienieWysylek()

        Dim lvarI As Integer
        lvarI = 0
        dgvWysylki.Rows.Clear()
        For Each lvarWysylki As clsInhWysylka In mvarZlecenie.Wysylka
            lvarI += 1
            dgvWysylki.Rows.Add(lvarI, lvarWysylki.Numer, lvarWysylki.DataWysylki.ToShortDateString, lvarWysylki.Pracownik.Nazwisko) 'mvarUzytkownik.mvarNazwisko)
            dgvWysylki.Rows(lvarI - 1).Tag = lvarWysylki
        Next

    End Sub

    Private Sub UzupelnijDaneWysylki()

        Dim lvarI As Integer = 0

        WyczyscDanePozycjiWysylki()
        WyczyscDanePaczkiWysylki()
        dgvPaczkiWysylki.Rows.Clear()
        dgvPozycjiWysylki.Rows.Clear()
        dgvPozycjeZlecenia.ClearSelection()

        For Each lvarPozycja As clsPozycjeWysylki In CType(dgvWysylki.SelectedRows(0).Tag, clsInhWysylka).PozycjeWysylki
            For Each lvarRow As DataGridViewRow In dgvPozycjeZlecenia.Rows
                If CType(lvarRow.Tag, clsInhPozycjaZlecenia).Id = lvarPozycja.PozycjeZleceniaId Then
                    lvarI += 1
                    If lvarPozycja.Id = -1 Then
                        dgvPozycjiWysylki.Rows.Add(lvarI, Nothing, lvarPozycja.PozycjeZleceniaId, FormatowanieLiczby(lvarPozycja.Ilosc), lvarRow.Cells("colJednostka").Value)
                        dgvPozycjiWysylki.Rows(lvarI - 1).Tag = lvarPozycja
                    Else
                        dgvPozycjiWysylki.Rows.Add(lvarI, lvarPozycja.Id, lvarPozycja.PozycjeZleceniaId, FormatowanieLiczby(lvarPozycja.Ilosc), lvarRow.Cells("colJednostka").Value)
                        dgvPozycjiWysylki.Rows(lvarI - 1).Tag = lvarPozycja
                    End If
                    Exit For
                End If
            Next
        Next

        lvarI = 0
        For Each lvarPozycja As clsInhPaczkiWysylki In CType(dgvWysylki.SelectedRows(0).Tag, clsInhWysylka).PaczkiWysylki
            lvarI += 1
            If lvarPozycja.Id = -1 Then
                dgvPaczkiWysylki.Rows.Add(lvarI, Nothing, lvarPozycja.NumerListuPrzewozowego, FormatowanieLiczby(lvarPozycja.Waga), lvarPozycja.FirmaKurierska)
                dgvPaczkiWysylki.Rows(lvarI - 1).Tag = lvarPozycja
            Else
                dgvPaczkiWysylki.Rows.Add(lvarI, lvarPozycja.Id, lvarPozycja.NumerListuPrzewozowego, FormatowanieLiczby(lvarPozycja.Waga), lvarPozycja.FirmaKurierska)
                dgvPaczkiWysylki.Rows(lvarI - 1).Tag = lvarPozycja
            End If
        Next

        If dgvPozycjiWysylki.Rows.Count > 0 Then
            dgvPozycjiWysylki.ClearSelection()
        End If

        If dgvPaczkiWysylki.Rows.Count > 0 Then
            dgvPaczkiWysylki.ClearSelection()
        End If

        If Not mvarWyznTylkoDoOdczytu Then
            grbPozycjeWysylki.Enabled = True
            grbDaneWysylki.Enabled = True
            grbPaczkiWysylki.Enabled = True
            grbDanePaczki.Enabled = True
        End If

    End Sub


    Private Sub WyczyscDanePozycjiWysylki()

        txtNumerPozycjiZlecenia.Text = String.Empty
        txtIlosc.Text = String.Empty
        lblIloscDoWyslania.Text = String.Empty
        lblJednostka.Text = String.Empty
        cmdPozycjeWysylkiUsun.Enabled = False
        cmdPozycjeWysylkiZmien.Enabled = False
        cmdPozycjeWysylkiDodaj.Enabled = True
        grbDaneWysylki.Text = "DODANIE NOWEJ POZYCJI DO WYSYŁKI"
        dgvPozycjiWysylki.ClearSelection()

    End Sub

    Private Sub WyczyscGRBDaneWysylki()

        txtNumerPozycjiZlecenia.Text = String.Empty
        txtIlosc.Text = String.Empty
        lblIloscDoWyslania.Text = String.Empty
        lblJednostka.Text = String.Empty
        grbDaneWysylki.Text = "DODANIE NOWEJ POZYCJI DO WYSYŁKI"

    End Sub

    Private Sub WyczyscDanePaczkiWysylki()

        txtNumerListuPrzewozowego.Text = String.Empty
        txtWaga.Text = String.Empty
        cmbFirmaKurierska.SelectedIndex = -1
        cmdPaczkiWysylkiUsun.Enabled = False
        cmdPaczkiWysylkiZmien.Enabled = False
        cmdPaczkiWysylkiDodaj.Enabled = True
        grbDanePaczki.Text = "DODANIE NOWEJ PACZKI"

    End Sub


    Private Sub ZnajdzPozycjeZlecenia()

        For Each lvarRow As DataGridViewRow In dgvPozycjeZlecenia.Rows

            If CType(lvarRow.Tag, clsInhPozycjaZlecenia).Id.ToString() = txtNumerPozycjiZlecenia.Text Then
                dgvPozycjeZlecenia.ClearSelection()
                dgvPozycjeZlecenia.Rows.Item(lvarRow.Index).Selected = True
                If dgvPozycjeZlecenia.Rows.Item(dgvPozycjeZlecenia.Rows.Count - 1).Index > 2 Then
                    dgvPozycjeZlecenia.FirstDisplayedScrollingRowIndex = dgvPozycjeZlecenia.Rows.Item(dgvPozycjeZlecenia.Rows.Count - 1).Index - 1
                Else
                    dgvPozycjeZlecenia.FirstDisplayedScrollingRowIndex = dgvPozycjeZlecenia.Rows.Item(dgvPozycjeZlecenia.Rows.Count - 1).Index
                End If
                mvarWyznPozycjiZlecenia = True
                Exit For
            Else
                mvarWyznPozycjiZlecenia = False
            End If
        Next

    End Sub

    Function WyslanaIlosc(ByVal IdPozcycjaZlecenia As Integer) As Double

        Dim lvarSuma As Double

        For Each lvarRow As DataGridViewRow In dgvWysylki.Rows
            For Each lvarPozycja As clsPozycjeWysylki In CType(lvarRow.Tag, clsInhWysylka).PozycjeWysylki
                If lvarPozycja.PozycjeZleceniaId = IdPozcycjaZlecenia Then
                    lvarSuma = lvarSuma + CDbl(Replace(lvarPozycja.Ilosc, ".", ","))
                End If
            Next
        Next
        Return lvarSuma

    End Function

    Private Sub ObliczIloscDoWysylania()

        Dim lvarWyzn As Boolean = False

        lblIloscDoWyslania.Text = FormatowanieLiczby(CStr(CDbl(CType(dgvPozycjeZlecenia.SelectedRows.Item(0).Tag, clsInhPozycjaZlecenia).Ilosc) - WyslanaIlosc(CType(dgvPozycjeZlecenia.SelectedRows.Item(0).Tag, clsInhPozycjaZlecenia).Id)))
        For Each lvarRow2 As DataGridViewRow In dgvPozycjiWysylki.Rows
            If CInt(lvarRow2.Cells("colPozycjeWysylkiPozycjaZleceniaId").Value) = CType(dgvPozycjeZlecenia.SelectedRows.Item(0).Tag, clsInhPozycjaZlecenia).Id Then
                dgvPozycjiWysylki.Rows.Item(lvarRow2.Index).Selected = True
                If lvarRow2.Index > 2 Then
                    dgvPozycjiWysylki.FirstDisplayedScrollingRowIndex = lvarRow2.Index - 1
                Else
                    dgvPozycjiWysylki.FirstDisplayedScrollingRowIndex = lvarRow2.Index
                End If
                cmdPozycjeWysylkiZmien.Enabled = True
                cmdPozycjeWysylkiUsun.Enabled = True
                Exit For
            End If
        Next
        lblJednostka.Text = CStr(dgvPozycjeZlecenia.SelectedRows.Item(0).Cells("colJednostka").Value)

    End Sub


    Private Sub SprawdzLiczbeCalkowita(ByVal Liczba1 As String)

        If Liczba1 <> String.Empty And IsNumeric(Liczba1) Then
            If InStr(Liczba1, ",") = Nothing And CInt(Liczba1) > 0 Then
                mvarWyznSprawdzeniaLiczbyCalkowitej = True
            Else
                mvarWyznSprawdzeniaLiczbyCalkowitej = False
            End If
        Else
            mvarWyznSprawdzeniaLiczbyCalkowitej = False
        End If

    End Sub

    Private Sub SprawdzLiczbeZmiennoprzecinkowa(ByVal Liczba1 As String)

        If Liczba1 <> String.Empty And IsNumeric(Liczba1) Then
            If CDbl(Liczba1) > 0 Then
                mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej = True
            Else
                mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej = False
            End If
        Else
            mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej = False
        End If

    End Sub

    Private Sub SprawdzIlosc()

        If CDbl(txtIlosc.Text) > (CDbl(lblIloscDoWyslania.Text) + CDbl(CType(dgvPozycjeZlecenia.SelectedRows.Item(0).Tag, clsInhPozycjaZlecenia).Ilosc) / 10) And CDbl((lblIloscDoWyslania.Text)) > 0 Then
            mvarWyznSprawdzeniaIlosc = False
        Else
            mvarWyznSprawdzeniaIlosc = True
        End If

    End Sub


    Function FormatowanieLiczby(ByVal Liczba As String) As String

        Dim lvarWynik As String
        Dim lvarTmp As String

        lvarTmp = Replace(Liczba, ".", ",")
        If CBool(InStr(lvarTmp, ",")) Then
            If InStr(lvarTmp, ",") + 2 <= lvarTmp.Length Then
                lvarWynik = lvarTmp.Substring(0, InStr(lvarTmp, ",") + 2)
            Else
                lvarWynik = lvarTmp & "0"
            End If
        Else
            lvarWynik = lvarTmp & ",00"
        End If

        Return lvarWynik

    End Function

    Function SprwdzWysylke() As String

        Dim lvarTmp As String

        For Each lvarRow As DataGridViewRow In dgvWysylki.Rows
            If CType(lvarRow.Tag, clsInhWysylka).PozycjeWysylki.Count = 0 Or CType(lvarRow.Tag, clsInhWysylka).PaczkiWysylki.Count = 0 Then
                lvarTmp = lvarTmp & (lvarRow.Index + 1) & ", "
            End If
        Next

        Return lvarTmp

    End Function


    Private Sub ProcesZapisywania()

        Dim lvarTmp As String

        Select Case MsgBox("Czy zapisać wprowadzone zmiany do bazy?", MsgBoxStyle.YesNo, "WIREMET")
            Case MsgBoxResult.No
                mvarChanged = False
                mvarCancel = False
            Case MsgBoxResult.Yes
                lvarTmp = SprwdzWysylke()
                If lvarTmp = String.Empty Then
                    Zapisz()
                Else
                    MessageBox.Show("Wysyłka " & lvarTmp & "nie posiada wszystkich danych.", "WIREMET")
                    mvarCancel = True
                End If
        End Select

    End Sub

    Private Sub Zapisz()

        With mvarZlecenie
            If dgvWysylki.Rows.Count > 0 And mvarZlecenie.StatusWysylkiID <> 3 Then
                .StatusWysylkiID = 2
            ElseIf mvarZlecenie.StatusWysylkiID <> 3 Then
                .StatusWysylkiID = 1
            End If

            .Wysylka.Clear()
            For Each lvarRow As DataGridViewRow In dgvWysylki.Rows
                .Wysylka.Add(CType(lvarRow.Tag, clsInhWysylka))
            Next

            .Save(mvarDbHolder)
        End With

        mvarChanged = False
        mvarCancel = False
        MessageBox.Show("Zapisano do bazy.", "WIREMET")
        UzupelnienieWysylek()
        UzupelnijDaneWysylki()

    End Sub


    Private Sub dgvPozycjeZlecenia_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvPozycjeZlecenia.CellMouseClick

        If dgvPozycjeZlecenia.SelectedRows.Count > 0 Then
            WyczyscDanePozycjiWysylki()
            txtNumerPozycjiZlecenia.Text = CStr(CType(dgvPozycjeZlecenia.SelectedRows.Item(0).Tag, clsInhPozycjaZlecenia).Id)
            lblIloscDoWyslania.Text = FormatowanieLiczby(CStr(CDbl(CType(dgvPozycjeZlecenia.SelectedRows.Item(0).Tag, clsInhPozycjaZlecenia).Ilosc) - WyslanaIlosc(CType(dgvPozycjeZlecenia.SelectedRows.Item(0).Tag, clsInhPozycjaZlecenia).Id)))
            lblJednostka.Text = CStr(dgvPozycjeZlecenia.SelectedRows.Item(0).Cells("colJednostka").Value)
            For Each lvarRow2 As DataGridViewRow In dgvPozycjiWysylki.Rows
                If lvarRow2.Cells("colPozycjeWysylkiPozycjaZleceniaId").Value.ToString() = txtNumerPozycjiZlecenia.Text Then
                    dgvPozycjiWysylki.Rows.Item(lvarRow2.Index).Selected = True
                    If lvarRow2.Index > 2 Then
                        dgvPozycjiWysylki.FirstDisplayedScrollingRowIndex = lvarRow2.Index - 1
                    Else
                        dgvPozycjiWysylki.FirstDisplayedScrollingRowIndex = lvarRow2.Index
                    End If
                    Exit For
                End If
            Next
            If dgvPozycjiWysylki.SelectedRows.Count > 0 Then
                txtIlosc.Text = CStr(dgvPozycjiWysylki.SelectedRows.Item(0).Cells("colPozycjeWysylkiIlosc").Value)
                grbDaneWysylki.Text = "EDYCJA POZYCJI WYSYŁKI"
                cmdPozycjeWysylkiDodaj.Enabled = False
                cmdPozycjeWysylkiUsun.Enabled = True
                cmdPozycjeWysylkiZmien.Enabled = True
            Else
                cmdPozycjeWysylkiDodaj.Enabled = True
            End If
        End If

    End Sub


    'WYSYLKA
    Private Sub dgvWysylki_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvWysylki.CellMouseClick

        If dgvWysylki.SelectedRows.Count > 0 Then
            If Not mvarWyznTylkoDoOdczytu Then
                dgvWysylki.Rows.Item(dgvWysylki.CurrentRow.Index).Selected = True
                WyczyscDanePaczkiWysylki()
                WyczyscDanePozycjiWysylki()
                grbDaneWysylki.Text = String.Empty
                grbDanePaczki.Text = String.Empty
            Else 'tylko do odczytu
                grbPozycjeWysylki.Enabled = True
                grbPaczkiWysylki.Enabled = True
                grbDanePaczki.Enabled = False
                grbDaneWysylki.Enabled = False
                cmdNowaWysylka.Enabled = False
            End If
            mvarWysylkaIndeks = dgvWysylki.SelectedRows(0).Index
            UzupelnijDaneWysylki()
            If dgvWysylki.SelectedRows.Item(0).Index > 2 Then
                dgvWysylki.FirstDisplayedScrollingRowIndex = dgvWysylki.SelectedRows.Item(0).Index - 2
            Else
                dgvWysylki.FirstDisplayedScrollingRowIndex = dgvWysylki.SelectedRows.Item(0).Index
            End If
        Else
            MessageBox.Show("Wybierz wysyłkę do edycji.", "WIREMET")
        End If

    End Sub

    Private Sub cmdNowaWysylka_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNowaWysylka.Click

        Dim lvarI As Integer
        Dim lvarTmp As String

        Dim lvarFrme As New frmWysylkaData()
        With lvarFrme
            .ShowDialog()
        End With

        If dgvWysylki.Rows.Count > 0 Then
            dgvWysylki.ClearSelection()
        End If

        lvarI = dgvWysylki.Rows.Count
        If dgvWysylki.Rows.Count = 0 Then
            Dim lvarNowaWysylka As New clsInhWysylka()
            With lvarNowaWysylka
                .ID = -1
                .Numer = mvarZlecenie.Numer
                .DataWysylki = CDate(lvarFrme.dtpDataWysylki.Value.ToShortDateString)
                .PracownikID = mvarUzytkownik.Id
                .Pracownik.Nazwisko = mvarUzytkownik.Nazwisko
            End With
            dgvWysylki.Rows.Add(lvarI + 1, mvarZlecenie.Numer, lvarFrme.dtpDataWysylki.Value.ToShortDateString, mvarUzytkownik.Nazwisko)
            dgvWysylki.Rows(lvarI).Tag = lvarNowaWysylka
            dgvWysylki.Rows(lvarI).Selected = True
        Else
            lvarTmp = CStr(dgvWysylki.Rows(dgvWysylki.Rows.Count - 1).Cells("colWysylkaNumer").Value)

            If InStr(CStr(dgvWysylki.Rows(dgvWysylki.Rows.Count - 1).Cells("colWysylkaNumer").Value), "/") = 0 Then
                lvarTmp = "1"
            Else
                lvarTmp = dgvWysylki.Rows(dgvWysylki.Rows.Count - 1).Cells("colWysylkaNumer").Value.ToString().Substring(10, lvarTmp.Length - 10)
            End If

            Dim lvarNowaWysylka As New clsInhWysylka()
            With lvarNowaWysylka
                .ID = -1
                .Numer = mvarZlecenie.Numer & "/" & CStr(CInt(lvarTmp) + 1)
                .DataWysylki = CDate(lvarFrme.dtpDataWysylki.Value.ToShortDateString)
                .PracownikID = mvarUzytkownik.Id
                .Pracownik.Nazwisko = mvarUzytkownik.Nazwisko
            End With
            dgvWysylki.Rows.Add(lvarI + 1, mvarZlecenie.Numer & "/" & CStr(CInt(lvarTmp) + 1), lvarFrme.dtpDataWysylki.Value.ToShortDateString, mvarUzytkownik.Nazwisko)
            dgvWysylki.Rows(lvarI).Tag = lvarNowaWysylka
            dgvWysylki.Rows(lvarI).Selected = True
        End If

        'przygotowanie formularza
        'txtFirmaKurierska.Text = lblFirmaKurierska.Text
        WyczyscDanePozycjiWysylki()
        WyczyscDanePaczkiWysylki()
        grbDaneWysylki.Enabled = True
        grbDanePaczki.Enabled = True

        dgvPozycjiWysylki.Rows.Clear()
        dgvPaczkiWysylki.Rows.Clear()
        dgvPozycjeZlecenia.ClearSelection()

        grbPozycjeWysylki.Enabled = True
        grbPaczkiWysylki.Enabled = True

        'ustawienie widoku dgvWysylki
        If dgvWysylki.Rows.Count > 0 And dgvWysylki.Rows.Item(dgvWysylki.Rows.Count - 1).Index > 2 Then
            dgvWysylki.FirstDisplayedScrollingRowIndex = dgvWysylki.Rows.Item(dgvWysylki.Rows.Count - 1).Index - 1
        Else
            dgvWysylki.FirstDisplayedScrollingRowIndex = dgvWysylki.Rows.Item(dgvWysylki.Rows.Count - 1).Index
        End If

    End Sub

    Private Sub cmdUsunWysylke_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdUsunWysylke.Click

        If dgvWysylki.SelectedRows.Count > 0 Then
            Dim lvarIndexPoczatkowy As Integer
            lvarIndexPoczatkowy = dgvWysylki.SelectedRows(0).Index
            mvarZlecenie.WysylkaDelete.Add(CType(dgvWysylki.SelectedRows(0).Tag, clsInhWysylka))
            mvarChanged = True
            dgvWysylki.Rows.Remove(dgvWysylki.CurrentRow)
            If dgvWysylki.RowCount > 0 Then
                For lvarI As Integer = lvarIndexPoczatkowy To dgvWysylki.Rows.Count - 1
                    dgvWysylki.Rows.Item(lvarI).Cells("colWysylkaLp").Value = CInt(dgvWysylki.Rows.Item(lvarI).Cells("colWysylkaLp").Value) - 1
                Next
            End If
            grbDaneWysylki.Enabled = False
            grbDanePaczki.Enabled = False
            dgvWysylki.ClearSelection()
            WyczyscDanePozycjiWysylki()
            WyczyscDanePaczkiWysylki()
            dgvPaczkiWysylki.Rows.Clear()
            dgvPozycjiWysylki.Rows.Clear()
        Else
            MessageBox.Show("Wybierz wysyłkę do usunięcia.", "WIREMET")
        End If

    End Sub


    Private Sub dgvPozycjiWysylki_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvPozycjiWysylki.CellMouseClick

        If mvarWyznTylkoDoOdczytu = False And dgvPozycjiWysylki.SelectedRows.Count > 0 Then
            txtNumerPozycjiZlecenia.Text = CStr(dgvPozycjiWysylki.SelectedRows.Item(0).Cells("colPozycjeWysylkiPozycjaZleceniaId").Value)
            txtIlosc.Text = CStr(dgvPozycjiWysylki.SelectedRows.Item(0).Cells("colPozycjeWysylkiIlosc").Value)
            lblJednostka.Text = CStr(dgvPozycjiWysylki.SelectedRows.Item(0).Cells("colPozycjeWysylkiJednostka").Value)
            ZnajdzPozycjeZlecenia()
            grbDaneWysylki.Enabled = True
            ObliczIloscDoWysylania()
            cmdPozycjeWysylkiZmien.Enabled = True
            cmdPozycjeWysylkiUsun.Enabled = True
            cmdPozycjeWysylkiDodaj.Enabled = False
            grbDaneWysylki.Text = "EDYCJA POZYCJI WYSYŁKI"
            dgvPozycjeZlecenia.Enabled = True
        ElseIf mvarWyznTylkoDoOdczytu = True Then
            dgvPozycjeZlecenia.ClearSelection()
            dgvPozycjeZlecenia.Enabled = True
            For Each lvarRow2 As DataGridViewRow In dgvPozycjeZlecenia.Rows
                If CType(lvarRow2.Tag, clsInhPozycjaZlecenia).Id = CInt(dgvPozycjiWysylki.SelectedRows.Item(0).Cells("colPozycjeWysylkiPozycjaZleceniaId").Value) Then
                    dgvPozycjeZlecenia.Rows.Item(lvarRow2.Index).Selected = True
                    If lvarRow2.Index > 2 Then
                        dgvPozycjeZlecenia.FirstDisplayedScrollingRowIndex = lvarRow2.Index - 1
                    Else
                        dgvPozycjeZlecenia.FirstDisplayedScrollingRowIndex = lvarRow2.Index
                    End If
                    Exit For
                End If
            Next
        Else
            MessageBox.Show("Wybierz pozycję wysyłki do edycji.", "WIREMET")
        End If

    End Sub

    Private Sub cmdPozycjeWysylkiNowa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        WyczyscDanePozycjiWysylki()
        cmdPozycjeWysylkiDodaj.Enabled = True
        grbDaneWysylki.Enabled = True
        dgvPozycjeZlecenia.ClearSelection()
        dgvPozycjeZlecenia.Enabled = True
        If dgvPozycjiWysylki.Rows.Count <> 0 Then
            dgvPozycjiWysylki.ClearSelection()
        End If

    End Sub

    Private Sub cmdPozycjeWysylkiDodaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPozycjeWysylkiDodaj.Click

        SprawdzLiczbeZmiennoprzecinkowa(txtIlosc.Text)
        SprawdzLiczbeCalkowita(txtNumerPozycjiZlecenia.Text)

        If Not mvarWyznSprawdzeniaLiczbyCalkowitej Then
            MessageBox.Show("Podaj poprawanie numer pozycji.", "WIREMET")
        Else
            ZnajdzPozycjeZlecenia()
            If Not mvarWyznPozycjiZlecenia Then
                MessageBox.Show("Nie ma takiej pozycji zlecenia", "WIREMET")
            Else
                ObliczIloscDoWysylania()
                If Not mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej Then
                    MessageBox.Show("Podaj poprawnie ilość.", "WIEREMET")
                    txtIlosc.Focus()
                Else
                    SprawdzIlosc()
                    If Not mvarWyznSprawdzeniaIlosc Then
                        MessageBox.Show("Ilość poza granicą 10%.", "WIREMET")
                    End If
                    If CDbl(lblIloscDoWyslania.Text) - CDbl(txtIlosc.Text) <= 0 Then
                        dgvPozycjeZlecenia.Rows(dgvPozycjeZlecenia.SelectedRows.Item(0).Index).DefaultCellStyle.BackColor = Color.LightSteelBlue
                    Else
                        dgvPozycjeZlecenia.Rows(dgvPozycjeZlecenia.SelectedRows.Item(0).Index).DefaultCellStyle.BackColor = Color.Lavender
                    End If

                    Dim lvarI As Integer
                    Dim lvarNowaPozycja As New clsPozycjeWysylki
                    With lvarNowaPozycja
                        .WysylkaId = CType(dgvWysylki.SelectedRows(0).Tag, clsInhWysylka).ID
                        .PozycjeZleceniaId = CInt(Trim(txtNumerPozycjiZlecenia.Text))
                        .Ilosc = FormatowanieLiczby(Trim(txtIlosc.Text))
                    End With
                    lvarI = dgvPozycjiWysylki.Rows.Count
                    dgvPozycjiWysylki.Rows.Add(lvarI + 1, Nothing, txtNumerPozycjiZlecenia.Text, FormatowanieLiczby(Trim(txtIlosc.Text)), lblJednostka.Text)
                    dgvPozycjiWysylki.Rows(lvarI).Tag = lvarNowaPozycja

                    CType(dgvWysylki.Rows(mvarWysylkaIndeks).Tag, clsInhWysylka).PracownikID = mvarUzytkownik.Id
                    CType(dgvWysylki.Rows(mvarWysylkaIndeks).Tag, clsInhWysylka).Pracownik.Nazwisko = mvarUzytkownik.Nazwisko
                    dgvWysylki.Rows(mvarWysylkaIndeks).Cells("colWysylkaPracownik").Value = mvarUzytkownik.Nazwisko
                    CType(dgvWysylki.SelectedRows(0).Tag, clsInhWysylka).PozycjeWysylki.Add(CType(dgvPozycjiWysylki.Rows(lvarI).Tag, clsPozycjeWysylki))

                    mvarChanged = True
                    WyczyscDanePozycjiWysylki()
                    dgvPozycjiWysylki.ClearSelection()
                    dgvPozycjeZlecenia.ClearSelection()
                End If
            End If
        End If

    End Sub

    Private Sub cmdPozycjeWysylkiZmien_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPozycjeWysylkiZmien.Click

        Dim lvarTmp As Double

        SprawdzLiczbeZmiennoprzecinkowa(txtIlosc.Text)
        SprawdzLiczbeCalkowita(txtNumerPozycjiZlecenia.Text)

        If Not mvarWyznSprawdzeniaLiczbyCalkowitej Then
            MessageBox.Show("Podaj poprawanie numer pozycji.", "WIREMET")
        Else
            ZnajdzPozycjeZlecenia()
            If Not mvarWyznPozycjiZlecenia Then
                MessageBox.Show("Nie ma takiej pozycji zlecenia", "WIREMET")
            Else
                ObliczIloscDoWysylania()
                If Not mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej Then
                    MessageBox.Show("Podaj poprawnie ilość.", "WIEREMET")
                    txtIlosc.Focus()
                Else
                    lblIloscDoWyslania.Text = CStr(CDbl(lblIloscDoWyslania.Text) + CDbl(dgvPozycjiWysylki.SelectedRows.Item(0).Cells("colPozycjeWysylkiIlosc").Value))
                    lvarTmp = CDbl(dgvPozycjiWysylki.SelectedRows.Item(0).Cells("colPozycjeWysylkiIlosc").Value)
                    dgvPozycjiWysylki.SelectedRows.Item(0).Cells("colPozycjeWysylkiIlosc").Value = 0
                    SprawdzIlosc()
                    If Not mvarWyznSprawdzeniaIlosc Then
                        MessageBox.Show("Ilość poza granicą 10%.", "WIREMET")
                    End If
                    If CDbl(lblIloscDoWyslania.Text) - CDbl(txtIlosc.Text) <= 0 Then
                        dgvPozycjeZlecenia.Rows(dgvPozycjeZlecenia.SelectedRows.Item(0).Index).DefaultCellStyle.BackColor = Color.LightSteelBlue
                    Else
                        dgvPozycjeZlecenia.Rows(dgvPozycjeZlecenia.SelectedRows.Item(0).Index).DefaultCellStyle.BackColor = Color.Lavender
                    End If

                    CType(dgvWysylki.Rows(mvarWysylkaIndeks).Tag, clsInhWysylka).PracownikID = mvarUzytkownik.Id
                    CType(dgvWysylki.Rows(mvarWysylkaIndeks).Tag, clsInhWysylka).Pracownik.Nazwisko = mvarUzytkownik.Nazwisko
                    dgvWysylki.Rows(mvarWysylkaIndeks).Cells("colWysylkaPracownik").Value = mvarUzytkownik.Nazwisko
                    With CType(dgvPozycjiWysylki.SelectedRows.Item(0).Tag, clsPozycjeWysylki)
                        .Ilosc = Trim(txtIlosc.Text)
                    End With
                    With dgvPozycjiWysylki.SelectedRows.Item(0)
                        .Cells("colPozycjeWysylkiIlosc").Value = FormatowanieLiczby(Trim(txtIlosc.Text))
                    End With

                    mvarChanged = True
                    WyczyscDanePozycjiWysylki()
                    dgvPozycjiWysylki.ClearSelection()
                    dgvPozycjeZlecenia.ClearSelection()

                End If
            End If
        End If

    End Sub

    Private Sub cmdPozycjeWysylkiUsun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPozycjeWysylkiUsun.Click

        Dim lvarIndexPoczatkowy As Integer
        lvarIndexPoczatkowy = dgvPozycjiWysylki.SelectedRows(0).Index

        CType(dgvWysylki.SelectedRows.Item(0).Tag, clsInhWysylka).PozycjeWysylkiDelete.Add(CType(dgvPozycjiWysylki.SelectedRows(0).Tag, clsPozycjeWysylki))
        CType(dgvWysylki.SelectedRows.Item(0).Tag, clsInhWysylka).PozycjeWysylki.Remove(CType(dgvPozycjiWysylki.SelectedRows(0).Tag, clsPozycjeWysylki))
        CType(dgvWysylki.Rows(mvarWysylkaIndeks).Tag, clsInhWysylka).PracownikID = mvarUzytkownik.Id
        dgvWysylki.Rows(mvarWysylkaIndeks).Cells("colWysylkaPracownik").Value = mvarUzytkownik.Nazwisko

        dgvPozycjiWysylki.Rows.Remove(dgvPozycjiWysylki.SelectedRows(0))
        If dgvPozycjiWysylki.RowCount <> 0 Then
            For lvarI As Integer = lvarIndexPoczatkowy To dgvPozycjiWysylki.Rows.Count - 1
                dgvPozycjiWysylki.Rows.Item(lvarI).Cells("colPozycjeWysylkiLp").Value = CInt(dgvPozycjiWysylki.Rows.Item(lvarI).Cells("colPozycjeWysylkiLp").Value) - 1
            Next
        End If

        If CDbl(lblIloscDoWyslania.Text) + CDbl(txtIlosc.Text) <= 0 Then
            dgvPozycjeZlecenia.Rows(dgvPozycjeZlecenia.SelectedRows.Item(0).Index).DefaultCellStyle.BackColor = Color.LightSteelBlue
        ElseIf CDbl(lblIloscDoWyslania.Text) + CDbl(txtIlosc.Text) < CDbl(dgvPozycjeZlecenia.Rows(dgvPozycjeZlecenia.SelectedRows.Item(0).Index).Cells("colIlosc").Value) Then
            dgvPozycjeZlecenia.Rows(dgvPozycjeZlecenia.SelectedRows.Item(0).Index).DefaultCellStyle.BackColor = Color.Lavender
        Else
            dgvPozycjeZlecenia.Rows(dgvPozycjeZlecenia.SelectedRows.Item(0).Index).DefaultCellStyle.BackColor = Color.White
        End If
        WyczyscDanePozycjiWysylki()
        mvarChanged = True

    End Sub

    Private Sub cmdPozycjeWysylkiWyczysc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPozycjeWysylkiWyczysc.Click
        WyczyscDanePozycjiWysylki()
        dgvPozycjeZlecenia.ClearSelection()
    End Sub

    'PACZKI WYSYLKI
    Private Sub cmdDodaj_Click(sender As Object, e As EventArgs) Handles cmdDodaj.Click

        Dim lvarFrm As New frmFirmaKurierska(0)
        With lvarFrm
            .Location = New Point(600, 500)
            .ShowDialog()
        End With

        PobierzFirmyKurierskie()
    End Sub

    Private Sub dgvPaczkiWysylki_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvPaczkiWysylki.CellMouseClick

        Dim lvarIndex As Integer

        If mvarWyznTylkoDoOdczytu = False And dgvPaczkiWysylki.SelectedRows.Count > 0 Then
            txtNumerListuPrzewozowego.Text = CStr(dgvPaczkiWysylki.SelectedRows.Item(0).Cells("colPaczkaWysylkiNumerListuPrzewozowego").Value)
            txtWaga.Text = CStr(dgvPaczkiWysylki.SelectedRows.Item(0).Cells("colPaczkaWysylkiWaga").Value)
            lvarIndex = cmbFirmaKurierska.FindString(dgvPaczkiWysylki.SelectedRows.Item(0).Cells("colPaczkaWysylkiFirmaKurierska").Value.ToString)
            cmbFirmaKurierska.SelectedIndex = lvarIndex
            cmdPaczkiWysylkiZmien.Enabled = True
            cmdPaczkiWysylkiUsun.Enabled = True
            grbDanePaczki.Enabled = True
            grbDanePaczki.Text = "EDYCJA PACZKI WYSYŁKI"
            cmdPaczkiWysylkiDodaj.Enabled = False
        ElseIf mvarWyznTylkoDoOdczytu = True Then
            txtNumerListuPrzewozowego.Text = CStr(dgvPaczkiWysylki.SelectedRows.Item(0).Cells("colPaczkaWysylkiNumerListuPrzewozowego").Value)
            txtWaga.Text = CStr(dgvPaczkiWysylki.SelectedRows.Item(0).Cells("colPaczkaWysylkiWaga").Value)
        Else
            MessageBox.Show("Wybierz paczkę wysyłki do edycji.", "WIREMET")
        End If

    End Sub

    'Private Sub cmdPaczkiWysylkiNowa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    '    WyczyscDanePaczkiWysylki()
    '    grbDanePaczki.Enabled = True
    '    cmdPaczkiWysylkiDodaj.Enabled = True
    '    If dgvPaczkiWysylki.Rows.Count > 0 Then
    '        dgvPaczkiWysylki.ClearSelection()
    '    End If

    'End Sub

    Private Sub cmdPaczkiWysylkiDodaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPaczkiWysylkiDodaj.Click

        SprawdzLiczbeZmiennoprzecinkowa(txtWaga.Text)

        If Not mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej Then
            MessageBox.Show("Podaj poprawnie wartość.", "WIEREMET")
            txtWaga.Focus()
        ElseIf cmbFirmaKurierska.SelectedIndex = -1 Then
            MessageBox.Show("Wybierz firmę kurierską.", "WIEREMET")
            cmbFirmaKurierska.Focus()
        Else
            Dim lvarI As Integer
            lvarI = dgvPaczkiWysylki.Rows.Count

            Dim lvarNowaPaczka As New clsInhPaczkiWysylki()
            With lvarNowaPaczka
                .WysylkaId = CType(dgvWysylki.SelectedRows(0).Tag, clsInhWysylka).ID
                .NumerListuPrzewozowego = Trim(txtNumerListuPrzewozowego.Text)
                .Waga = FormatowanieLiczby(Trim(txtWaga.Text))
                .FirmaKurierskaId = CType(cmbFirmaKurierska.SelectedItem, clsFirmaKurierska).Id
            End With

            dgvPaczkiWysylki.Rows.Add(lvarI + 1, Nothing, Trim(txtNumerListuPrzewozowego.Text), FormatowanieLiczby(Trim(txtWaga.Text)), CType(cmbFirmaKurierska.SelectedItem, clsFirmaKurierska).Nazwa)
            dgvPaczkiWysylki.Rows(lvarI).Tag = lvarNowaPaczka

            CType(dgvWysylki.Rows(mvarWysylkaIndeks).Tag, clsInhWysylka).PracownikID = mvarUzytkownik.Id
            CType(dgvWysylki.Rows(mvarWysylkaIndeks).Tag, clsInhWysylka).Pracownik.Nazwisko = mvarUzytkownik.Nazwisko
            dgvWysylki.Rows(mvarWysylkaIndeks).Cells("colWysylkaPracownik").Value = mvarUzytkownik.Nazwisko
            CType(dgvWysylki.SelectedRows(0).Tag, clsInhWysylka).PaczkiWysylki.Add(CType(dgvPaczkiWysylki.Rows(lvarI).Tag, clsInhPaczkiWysylki))

            mvarChanged = True
            WyczyscDanePaczkiWysylki()
            dgvPaczkiWysylki.ClearSelection()
        End If

    End Sub

    Private Sub cmdPaczkiWysylkiZmien_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPaczkiWysylkiZmien.Click

        SprawdzLiczbeZmiennoprzecinkowa(txtWaga.Text)

        If Not mvarWyznSprawdzeniaLiczbyZmiennoprzecinkowej Then
            MessageBox.Show("Podaj poprawnie wartość.", "WIEREMET")
            txtWaga.Focus()
        Else
            dgvPaczkiWysylki.SelectedRows.Item(0).Cells("colPaczkaWysylkiWaga").Value = 0

            CType(dgvWysylki.Rows(mvarWysylkaIndeks).Tag, clsInhWysylka).PracownikID = mvarUzytkownik.Id
            CType(dgvWysylki.Rows(mvarWysylkaIndeks).Tag, clsInhWysylka).Pracownik.Nazwisko = mvarUzytkownik.Nazwisko
            dgvWysylki.Rows(mvarWysylkaIndeks).Cells("colWysylkaPracownik").Value = mvarUzytkownik.Nazwisko
            With CType(dgvPaczkiWysylki.SelectedRows.Item(0).Tag, clsInhPaczkiWysylki)
                .NumerListuPrzewozowego = Trim(txtNumerListuPrzewozowego.Text)
                .Waga = FormatowanieLiczby(Trim(txtWaga.Text))
                .FirmaKurierskaId = CType(cmbFirmaKurierska.SelectedItem, clsFirmaKurierska).Id
            End With
            With dgvPaczkiWysylki.SelectedRows.Item(0)
                .Cells("colPaczkaWysylkiNumerListuPrzewozowego").Value = txtNumerListuPrzewozowego.Text
                .Cells("colPaczkaWysylkiWaga").Value = FormatowanieLiczby(Trim(txtWaga.Text)) '+= CDbl(txtWaga.Text)
                .Cells("colPaczkaWysylkiFirmaKurierska").Value = CType(cmbFirmaKurierska.SelectedItem, clsFirmaKurierska).Nazwa
            End With

            mvarChanged = True
            WyczyscDanePaczkiWysylki()
            dgvPaczkiWysylki.ClearSelection()
        End If

    End Sub

    Private Sub cmdPaczkiWysylkiUsun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPaczkiWysylkiUsun.Click

        Dim lvarIndexPoczatkowy As Integer
        lvarIndexPoczatkowy = dgvPaczkiWysylki.SelectedRows(0).Index

        CType(dgvWysylki.SelectedRows.Item(0).Tag, clsInhWysylka).PaczkiWysylkiDelete.Add(CType(dgvPaczkiWysylki.SelectedRows(0).Tag, clsInhPaczkiWysylki))
        CType(dgvWysylki.SelectedRows.Item(0).Tag, clsInhWysylka).PaczkiWysylki.Remove(CType(dgvPaczkiWysylki.SelectedRows(0).Tag, clsInhPaczkiWysylki))
        CType(dgvWysylki.Rows(mvarWysylkaIndeks).Tag, clsInhWysylka).PracownikID = mvarUzytkownik.Id
        dgvWysylki.Rows(mvarWysylkaIndeks).Cells("colWysylkaPracownik").Value = mvarUzytkownik.Nazwisko

        dgvPaczkiWysylki.Rows.Remove(dgvPaczkiWysylki.SelectedRows(0))
        If dgvPaczkiWysylki.RowCount <> 0 Then
            For lvarI As Integer = lvarIndexPoczatkowy To dgvPaczkiWysylki.Rows.Count - 1
                dgvPaczkiWysylki.Rows.Item(lvarI).Cells("colPaczkaWysylkiLp").Value = CInt(dgvPaczkiWysylki.Rows.Item(lvarI).Cells("colPaczkaWysylkiLp").Value) - 1
            Next
        End If
        mvarChanged = True
        WyczyscDanePaczkiWysylki()
        grbDanePaczki.Enabled = False
        dgvPaczkiWysylki.ClearSelection()

    End Sub

    Private Sub cmsPaczkiWysylkiWyczysc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmsPaczkiWysylkiWyczysc.Click

        WyczyscDanePaczkiWysylki()

    End Sub

    'ZAKONCZENIE
    Private Sub cmdZakonczenieWysylki_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdZakonczenieWysylki.Click

        If Not mvarChanged Then
            Dim lvarFrme As New frmWysylkaZakonczenie(mvarZlecenie.ID)
            With lvarFrme
                .ShowDialog()
            End With

            If lvarFrme.mvarZakonczona Then
                Me.Close()
            End If
        Else
            ProcesZapisywania()
        End If

    End Sub

    Private Sub cmdZapisz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdZapisz.Click

        If mvarChanged Then
            ProcesZapisywania()
        Else
            MessageBox.Show("Nie wprowadzono żadnych zmian.", "WIREMET")
        End If

    End Sub

    Private Sub cmdAnuluj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAnuluj.Click
        mvarChanged = False
        Me.Close()
    End Sub

    Private Sub cmdZamknij_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdZamknij.Click
        Me.Close()
    End Sub

    'ZDARZENIA FORMULARZA
    Private Sub frmWysylka_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        dgvPozycjeZlecenia.ClearSelection()
        dgvPozycjiWysylki.ClearSelection()
        If mvarWysylkaId > 0 Then
            For lvarI = 0 To dgvWysylki.Rows.Count - 1
                If CType(dgvWysylki.Rows(lvarI).Tag, clsInhWysylka).ID = mvarWysylkaId Then
                    dgvWysylki.ClearSelection()
                    dgvWysylki.Rows.Item(lvarI).Selected = True
                    If dgvWysylki.SelectedRows.Item(0).Index > 2 Then
                        dgvWysylki.FirstDisplayedScrollingRowIndex = dgvWysylki.SelectedRows.Item(0).Index - 2
                    Else
                        dgvWysylki.FirstDisplayedScrollingRowIndex = dgvWysylki.SelectedRows.Item(0).Index
                    End If
                    UzupelnijDaneWysylki()
                    Exit For
                End If
            Next
        End If
    End Sub

    Private Sub frmWysylka_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        If Not mvarWyznTylkoDoOdczytu Then
            mvarBlokowanie.Unlock()
        End If
        mvarDbHolder.Close()
    End Sub

    Private Sub frmWysylka_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If mvarChanged Then
            ProcesZapisywania()
            If mvarCancel = True Then
                e.Cancel = True
            End If
        End If
    End Sub


    Private Sub txtIlosc_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtIlosc.Enter

        SprawdzLiczbeCalkowita(txtNumerPozycjiZlecenia.Text)

        If Not mvarWyznSprawdzeniaLiczbyCalkowitej Then
            MessageBox.Show("Podaj poprawanie numer pozycji.", "WIREMET")
        Else
            ZnajdzPozycjeZlecenia()
            If Not mvarWyznPozycjiZlecenia Then
                MessageBox.Show("Nie ma takiej pozycji zlecenia", "WIREMET")
                txtNumerPozycjiZlecenia.Text = String.Empty
                lblIloscDoWyslania.Text = CStr(0)
                lblJednostka.Text = String.Empty
                txtNumerPozycjiZlecenia.Focus()
            Else
                ObliczIloscDoWysylania()
            End If
        End If

    End Sub

#Region "KeyPress"

    Private Sub txtNumerPozycjiZlecenia_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtNumerPozycjiZlecenia.KeyPress

        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then

            SprawdzLiczbeCalkowita(txtNumerPozycjiZlecenia.Text)

            If Not mvarWyznSprawdzeniaLiczbyCalkowitej Then
                MessageBox.Show("Podaj poprawanie numer pozycji.", "WIREMET")
            Else
                ZnajdzPozycjeZlecenia()
                If Not mvarWyznPozycjiZlecenia Then
                    MessageBox.Show("Nie ma takiej pozycji zlecenia", "WIREMET")
                    txtNumerPozycjiZlecenia.Text = String.Empty
                    txtNumerPozycjiZlecenia.Focus()
                Else
                    ObliczIloscDoWysylania()
                    txtIlosc.Focus()
                End If
            End If

        End If

    End Sub

    Private Sub txtNumerListuPrzewozowego_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles txtNumerListuPrzewozowego.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            txtWaga.Focus()
        End If
    End Sub

    Private Sub txtWaga_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtWaga.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmbFirmaKurierska.Focus()
        End If
    End Sub

    Private Sub cmbFirmaKurierska_KeyPress(sender As Object, e As KeyPressEventArgs) Handles cmbFirmaKurierska.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            cmdPaczkiWysylkiDodaj.Focus()
        End If
    End Sub

#End Region

End Class